快速講解一下什麼是launch file
,大家如果前兩天有稍微玩一下parameter server
的話就會發現,在parameter server
設定的一些自己定義的parameter
,在關掉server
的時候就會消失了,下次再打開的時候就沒這個parameter
了,這樣真的超麻煩的,我要使用全域變數明明就是為了方便修改參數,結果我改好以後下次開啟的時候又要重新設定,這樣很不合理吧XD 所以這就是為什麼會有launch file
啦! 這個檔案就是用來放置一些預設的參數、或是一些需要事先執行的程式,有點像shell
檔那樣,那我們就來看看要怎麼建立這個launch file
吧!
首先,這個檔案需要放在/launch
的資料夾內:
$ roscd beginner_tutorials
$ mkdir launch
$ cd launch
$ vim startup.launch
這個.launch
檔就是我們要預先寫好的設定檔囉! 使用的是xml
格式,所以會需要用到許多不同的標籤:
<launch>
<param name="/print_frq" type="double" value="2.0" />
</launch>
以上就是我們昨天那篇設定的/print_frq
參數啦! 比較需要注意的是,之前用parameter server
設定的時候不需要設定型別,但是寫在這個launch
檔的時候需要連型別一起定義好喔!
$ roslaunch [package] [filename.launch]
使用roslaunch
執行launch
檔,就可以把參數預設好囉!
可以看到執行完roslaunch
之後,他就建立好了/print_frq
這個參數,其值為2.0。
launch file
的功能不只有設定參數而已,還可以設定一些一開始就需要在背景執行的node
,所以我們可以修改startup.launch
如下:
<launch>
<param name="/print_frq" type="double" value="2.0" />
<node name="talker" pkg="beginner_tutorials" type="talker.py" />
</launch>
那麼在執行roslaunch
的時候,他就會幫你執行talker
這個node
囉!
另外,通常在執行node
之前我們都需要先執行roscore
,但是在roslaunch
執行的時候,他會自己偵測是否有開啟master
,如果沒有的話他就會自動幫你開一個喔!
可以看到他自動建立了一個新的master
,這樣真的蠻方便的,事先寫好launch
檔,之後只需要一個roslaunch
指令,就可以一鍵執行囉! (有種中國手遊的感覺 XD)
ros wiki - roslaunch
ros tutorials - using roslaunch
ros tutorials - launch file